package prj3;


import java.lang.String;
import java.util.Calendar;
import java.util.GregorianCalendar;

import prj3.exceptions.EmptyListException;

/**
 * Defines a generic grid
 * @see ICoordinate
 * @author romain
 *
 */
public interface IGrid {
	
	/**
	 * Performs one iteration update in the grid
	 *
	 */
	public void stepGrid();
	
	/**
	 * Returns true if we should stop iterating
	 * @return boolean
	 */
	public boolean isDone();
	
	/**
	 * Prints a textual representation of the cell
	 * indicated by coord
	 * @param coord
	 * @return String
	 */
	public String printCell(ICoordinate coord);
	
	/**
	 * Gets the coordinate neighboring the one given in
	 * the direction given. Directions are defined in the ICoordinate
	 * interface as DIR_*.
	 * @see ICoordinate
	 * @param coord
	 * @param direction
	 * @return ICoordinate
	 */
	public ICoordinate getNeighbor(ICoordinate coord, int direction);
	
	/**
	 * Gets the value (as a float) in the cell 
	 * specified by coord
	 * @param coord
	 * @return float
	 */
	public float getFloatValue(ICoordinate coord);
	
	/**
	 * Sets the value (as a float) of the cell
	 * specified by coord.
	 * @param coord
	 * @param value
	 */
	public void setFloatValue(ICoordinate coord, float value);
    
}
